Skip to main content

Laser

The Laser is like a normal scrap mechanic sensor but instead of ON or OFF, It provides more information which could be useful for things like Robot kinematics (More like Sensor-Enhanced Kinematics)

Advanced users: This uses a ray cast for object detection, But this also means that there is an offset between the raycast's starting point and the object itself. it's small but this could cause issues with your math!

Structures


LaserData

This structure contains data that the laser has received

Fields

  • directionWorld [ Vec3 ] The direction vector of the ray cast
  • fraction [ number ] The fraction (0-1) of the distance reached until collision divided by the ray's length
  • normalLocal [ Vec3 ] The normal vector of the surface that was hit, relative to the target's rotation.
  • normalWorld [ Vec3 ] The normal vector of the hit surface
  • originWorld [ Vec3 ] The starting world position of the raycast.
  • pointLocal [ Vec3 ] The world position of the point that was hit, relative to the target's position.
  • pointWorld [ Vec3 ] The world position of the point that was hit.
  • type [ string ] The physics type of the target that was hit. (See sm.physics.types)
  • valid [ boolean ] Is true if the ray cast was even valid.

Functions

setDistance

Laser.setDistance( distance )

Sets the distance (In Meters!).

Arguments:

  • distance [ number ] The new distance.

getLaserData

Laser.getLaserData()

Gets the data of the laser (Will send a ray cast!).

Returns:

  • [ boolean ] Is True if it hit something.
  • [ LaserData ] The laser data.

toggleLaser

Laser.toggleLaser()

Toggles the visibility of the laser effect.


isBeamEnabled

Laser.isBeamEnabled()

If the laser beam effect is currently enabled.

Returns:

  • [ boolean ] If the laser beam is enabled.

ignoreCurrentBody

Laser.ignoreCurrentBody( bool )

Arguments:

  • bool [ boolean ] Whether the body is ignored or not.

If true the laser will ignore the body its placed on.